#include<iostream>
#include<string>
class  simpleClass {
    public:
        int a,b;
};
struct simpleStruct{};
union  simpleUnion {};
enum   color  {
    red,green,blue
};

union Int{
    int i;
    char str[4];
};

void i2str(){
    Int num;
    // 00 'a' 'b' 'c'
    // num.i=('a'<<24)+('b'<<16)+('c');
    num.i=1;
    if(num.str[0]==1){//big end
        // 01 00 00 00
        num.i=('a')+('b'<<8)+('c'<<16);
    }else{//small end
        // 00 00 00 01
        num.i=('a'<<24)+('b'<<16)+('c'<<8);
    }
    std::cout<<num.str;
}

void classExam(){
    simpleClass sc;
    sc.a=3;
    sc.b=4;
}
char operator+(int i,std::string const&s){
    return s[i];
}
// const int&

double Random(){
    static double num=0.3;
    return num=(num)*(1-num);
}

void par(int const& i){
    std::cout<<"const"<<std::endl;
}
void par(int&){
    std::cout<<"not const"<<std::endl;
}
int main(){
    // std::string s="HELL";
    // std::cout<<2+s;
    // int & ir=0;
    i2str();
    // par(1);
    // int i=0;
    // par(i);
    // return 0;
}
    
    // int i=0;
    
    // while(i++<10){
    //     int j=0;
    //     j++;
    //     std::cout<<Random()<<' ';
    // }

    // int i=0;
    // par(i);
    // // std::cout<<2+std::string("HELLO")<<std::endl;
    // i2str();

void enumShow(){
    color c=red;
    switch (c)
    {
    case red:
        std::cout<<c<<std::endl;
        break;
    case green:
        break;
    case blue:
        break;
    }
}

/**
 * @brief function part
*/
int sum_array(int arr[],int len){
	return (len<2&&arr) ? (arr[0]) 
        : (arr[0] + sum_array(arr+1,len-1));
}
void greet(const char*cc){
    std::cout<<cc<<std::endl;
}
void ff(int){greet("int");}
void ff(short){greet("short");}
void ff(double){greet("double");}
void bin(int num){
    if(num/2>0)bin(num/2);
    std::cout<<num%2<<' '<<std::ends;
}
int callCount(){
    static int i=0;
    return ++i;
}
void callTest(){
    std::cout<<callCount()<<std::endl;
}
void localAndStatic(){
    int i =0;
    for( ;i<3;i++){
        static int i=1;
        i += i*i ;
        std::cout<<i<<' ';
    }
    std::cout<<i<<std::endl;
}
int mai43n(){
    enumShow();
    // callTest();
    // callTest();
    // localAndStatic();
    return 0;
}
    // bin(12);
    // ff(0.1f);

